// pages/leixingpz/index.js
import {
  allTypeByTree,
} from '../../utils/api/zhichu'
import {
  backData
} from '../../utils/util'
import {
  colors,
  tabTypeList
} from '../../utils/constData'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    color: colors[0],
    isEdit: true,
    tabList: tabTypeList,
    //原始数据
    typeOldList: [],
    btnList: [{
        title: '一级类型',
        select: '',
        list: []
      },
      {
        title: '二级类型',
        select: '',
        list: []
      },
    ],
    //选中tab类型
    selectTab: '1',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {},
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 获取所有类型的数据
    Promise.all([this.typeByTree()]).then(()=>{
      //设置二级类型数据
      this.getTwoList()
    })
    
  },
  /**切换tab */
  onChange(e) {
    this.setData({
      selectTab: e.detail.name
    })
  },
  /**点击按钮 一级二级类型 选中*/
  change(e) {
    const value = e.currentTarget.dataset.item.code
    const code = e.currentTarget.dataset.item.parentCode
    const index = code == '0' ? 0 : 1
    this.setData({
      [`btnList[${index}].select`]: value
    })
    if (!index) this.filterTwoList(value)
  },
  /**获取二级菜单数据 
   * code 一级类型值
   * value 二级类型值
   */
  filterTwoList(code, value = '') {
    let list = []
    if (code) {
      let filterList = this.data.typeOldList.filter(item => item.code === code)
      if (filterList.length) {
        list = filterList[0].childs
        list.map(item => item.childs = undefined)
      }
    }
    this.setData({
      ['btnList[1].select']: value,
      ['btnList[1].list']: list
    })
  },
  // typeTree
  typeByTree() {
    return new Promise(async (r) => {
      const res = await allTypeByTree({})
      //一级类型数据
      let list = []
      res.forEach((item) => {
        list.push({
          ...item,
          childs: undefined
        })
      })
      this.setData({
        typeOldList: res,
        ['btnList[0].list']: list,
      })
      r()
    })
  },
  /** 
   * 设置二级类型数据 和选中情况
   * 根据初次进入、新增返回和修改返回判断处理
  */
  getTwoList() {
    let selectOne = this.data.btnList[0].select
    //获取新增或修改的返回值
    let data = backData()
    if (data) {
      this.setData({
        [`btnList[${~~data.index}].select`]: data.code
      })
      if (~~data.index) return this.filterTwoList(selectOne, data.code)
    }
    //进入页面处理 
    this.filterTwoList(selectOne)
  },

  /**新增类型 显示修改弹框*/
  addBtn(e) {
    //类型级别 0一级类型 1二级类型
    const index = e.currentTarget.dataset.index
    const select = this.data.btnList[0].select
    wx.navigateTo({
      url: '/pages/addleixing/index?selectTab=' + this.data.selectTab + '&changeIndex=' + index + '&parentSelect=' + select,
    })
  },

  btnEdit(e) {
    const index = e.currentTarget.dataset.index
    const value = e.currentTarget.dataset.item
    const select = this.data.btnList[0].select
    wx.navigateTo({
      url: '/pages/addleixing/index?selectTab=' + this.data.selectTab + '&changeIndex=' + index + '&parentData=' + JSON.stringify(value) + '&parentSelect=' + select,
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },



  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})